<?php

require_once(BaseConfig::LoadClass('pagina.class.php'));

class PaginaCatalogo extends Pagina {
  /**
   * Objeto de conexion
   * 
   * @var Conecta
   */
  var $oConecta;
  
  /**
   * Nombre de la tabla que contiene los productos
   * @var string
   */
  var $strNombreTabla;
  
  /**
   * Indice del producto actual
   * 
   * @var int
   */
  var $intProductoActual;
  
  /**
   * Contenido del where para los productos. Este where puede ser alguna 
   * condicion como solo mostrar algunas categorias
   * 
   * @var string
   */
  var $strWhereTabla ;
  
  /**
   * Orden de la tabla
   * 
   * @var string
   */
  var $strOrdenTabla ;
  
  /**
   * Limite de los datos a obtener. Se puede poner algo como 5 para un limite
   * normal, o un 5,5 para una parte de los datos
   * @var int
   */
  var $intLimiteDatos;
  
  /**
   * Nombre del indice en la tabla
   * 
   * @var string
   */
  var $strIndiceProd ;
  
  /**
   * Verdadero si, en vez de obtener solo el indice y el nombre, el metodo 
   * __ObtenerDatos va a obtener todos los datos de la tabla
   * 
   * @var boolean
   */
  var $bolDatosTodos ;
  
  /**
   * Descripcion del producto en la tabla (Nombre del producto)
   * @var type 
   */
  var $strNombreProd ;
  
  function PaginaCatalogo() {
    $this->oConecta = new Conecta();
  }
  
  static function GetOptionArray() {
  }
  
  static function GetPluginsArray($intTipo = 0) {
    $arrRes = array();
    switch($intTipo) {
      case 0:
        break;
      case 1:
        $arrRes["ListaProds"  ] = "Listado de productos" ;
        $arrRes["ImagenesProd"] = "Imagenes del producto";
        break;
    }
    
    return $arrRes;
  }
  
  function __ObtenerDatosCatalogo() {
    $strConsulta  = "";
    $strConsulta .= "SELECT ";
    if($this->bolDatosTodos) {
      $strConsulta .= " * ";
    } else {
      $strConsulta .= "  {$this->strIndiceProd} AS indice, ";
      $strConsulta .= "  {$this->strNombreProd} AS nombre  ";
    }
    $strConsulta .= "FROM {$this->strNombreTabla} ";
    if($this->strWhereTabla) {
      $strConsulta .= "WHERE {$this->strWhereTabla} ";
    }
    if($this->strOrdenTabla) {
      $strConsulta .= "ORDER BY {$this->strWhereTabla} ";
    }
    if($this->intLimiteDatos) {
      $strConsulta = "LIMIT {$this->intLimiteDatos} ";
    }
    
    $this->oConecta->Consulta($strConsulta);
    
    if($this->bolDatosTodos) {
      $arrRes = $this->oConecta->GetCompleteRes();
    } else {
      while(!$this->oConecta->EOF) {
        $arrRes[$this->oConecta->Field('indice')] = $this->oConecta->Field('nombre');
        $this->oConecta->MoveNext();
      }
    }
    
    return $arrRes;
  }
  
  function ListaProds($intNumRes = 5) {
    $this->intLimiteDatos = $intNumRes;
    
    $arrProds = $this->__ObtenerDatosCatalogo();
    
    $strRes .= "<ul>";
    foreach($arrProds as $strNombre) {
      $strRes .= "<li>$strNombre</li>";
    }
    $strRes .= "</ul>";
    
    return $strRes;
  }
  
  function __ItemListaDesplegada($arrInfoItem) {
    $strRes = "<div>{$arrInfoItem[$this->strNombreProd]}</div>";
    return $strRes;
  }
  
  function __ListaDesplegada($intItemsPorRenglon = 3) {
    $bolDatosTodosAnt    = $this->bolDatosTodos;
    $this->bolDatosTodos = true;
    
    $arrItems = $this->__ObtenerDatosCatalogo();
    
    $strPagina = "<table class='TablaReportes' width='100%'>";
    $intIndice = 0;
    foreach($arrItems as $arrInfoItem) {
      if(!($intIndice % $intItemsPorRenglon)) {
        if(!$intIndice) {
          $strPagina .= "<tr>";
        } else {
          $strPagina .= "</tr><tr>";
        }
      }
      
      $strPagina .= "<td>" . $this->__ItemListaDesplegada($arrInfoItem) . "</td>";
      $intIndice++;
    }
    $strPagina .= "</tr></table>";
    
    return $strPagina;
  }
}

// Como este solo es una pre-interfase, no se registra
// Pagina::__RegisterPage("PaginaCatalogo");

?>